package com.hzlj.position.locate.common.dto.reportAudio;

import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fz.common.base.enums.db.InType;
import com.fz.common.base.enums.db.QueryField;
import com.fz.common.base.enums.db.RangeType;
import com.hzlj.position.locate.common.model.ReportAudio;
import com.hzlj.sqjz.jz.common.dto.common.JzCommonQueryParamDTO;
import com.hzlj.sqjz.jz.common.model.JzJbxx;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.util.Date;
import java.util.List;

import static com.fz.common.base.core.date.DateUtils.*;

/**
 * 主动音频上报(ReportAudio)查询参数DTO
 *
 * @author makejava
 * @date 2024-01-15 10:52:21
 */
@Data
@ToString
@Accessors(chain = true)
public class ReportAudioQueryParamDTO  extends JzCommonQueryParamDTO {
    /**
     * 矫正状态,JZZT
     */
    @QueryField(model = JzJbxx.class)
    private String jzzt = "";
    /**
     * 主键
     */
    @QueryField(model = ReportAudio.class)
    private String id;
    /**
     * 所属天
     */
    @QueryField(model = ReportAudio.class)
    @JsonFormat(locale = LOCALE, timezone = TIME_ZONE, pattern = DATE_SHORT_FORMAT)
    private Date belongDay;
    /**
     * 所属天(开始)
     */
    @QueryField(model = ReportAudio.class, range = RangeType.GTE, value = "belongDay")
    @JsonFormat(locale = LOCALE, timezone = TIME_ZONE, pattern = DATE_SHORT_FORMAT)
    private Date beginBelongDay = DateUtil.beginOfDay(new Date());
    /**
     * 所属天(结束)
     */
    @QueryField(model = ReportAudio.class, range = RangeType.LTE, value = "belongDay")
    @JsonFormat(locale = LOCALE, timezone = TIME_ZONE, pattern = DATE_SHORT_FORMAT)
    private Date endBelongDay = DateUtil.beginOfDay(new Date());
    /**
     * 人工上报状态,dict-REPORT_AUDIO_STATUS
     */
    @QueryField(model = ReportAudio.class)
    private String reportStatus;
    /**
     * 人工上报状态,dict-REPORT_AUDIO_STATUS
     */
    @QueryField(model = ReportAudio.class, in = InType.COMMA_ARRAY, value = "reportStatus")
    private List<String> reportStatuses;
    /**
     * 是否越界
     */
    @QueryField(model = ReportAudio.class)
    private Boolean crossBorder;
    /**
     * 是否已经处理,dict-HANDLE_STATUS
     */
    @QueryField(model = ReportAudio.class)
    private String handleStatus;
    /**
     * 声纹核验状态,dict-REPORT_AUDIO_VOICE_PRINT_MATCH
     */
    @QueryField(model = ReportAudio.class)
    private String voiceprintMatch;
    /**
     * 异常处理声纹核验状态,dict-REPORT_AUDIO_HANDLE_VOICE_PRINT_MATCH
     */
    @QueryField(model = ReportAudio.class)
    private String handleVoiceprintMatch;
    /**
     * 异常处理上报状态,dict-REPORT_AUDIO_HANDLE_STATUS
     */
    @QueryField(model = ReportAudio.class)
    private String handleReportStatus;
    /**
     * 语音汇报类型,dict-REPORT_AUDIO_TYPE
     */
    @QueryField(model = ReportAudio.class)
    private String reportAudioType;
}
